package com.shujia.day17.tcp3;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        /*
            服务端不断接收客户端传入过来的数据，并回复一条消息
         */

        // 1.创建对应的socket  0-65535  0-1024系统内部使用

        ServerSocket serverSocket = new ServerSocket(9999);

        while (true) {
            Socket socket = serverSocket.accept(); // 每次有客户端连接都需要创建一个Socket 所以需要使用while循环
            // 并且每个线程都需要获取一个socket用于对服务端发送数据

            new Thread(new OneServerSocket(socket)).start(); // 对于每个Socket之后创建一个线程  每个线程都要获取一个socket对象
        }

    }
}

class OneServerSocket implements Runnable{
    // run方法中需要获取socket
    Socket socket ;

    public OneServerSocket(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        // 在run方法中实现读取每个客户端发送过来的数据，并且每个客户端对应一个线程
        while (true) {
            try {
                System.out.println("==================帅哥在线聊天室启动了==================");
                // 读取数据
                InputStream inputStream = socket.getInputStream();
                byte[] bytes = new byte[1024];
                int read = inputStream.read(bytes);
                String message = new String(bytes, 0, read);
                System.out.println("收到帅哥信息：" + message);


                // 返回数据
                OutputStream outputStream = socket.getOutputStream();
                outputStream.write("服务端已经接收到数据".getBytes());
                outputStream.flush();
            } catch (Exception e){
                System.out.println("遇到问题，聊天室关闭，跑路...");
                e.printStackTrace();
            }
        }


    }
}